本文最后更新于:2023年10月15日 晚上
[FlareOn4]login
直接看JS
1 2 3 4 5 6 7 8 9 10 11
| document.getElementById("prompt").onclick = function () { var flag = document.getElementById("flag").value; var rotFlag = flag.replace(/[a-zA-Z]/g, function(c){ return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26); }); if ("PyvragFvqrYbtvafNerRnfl@syner-ba.pbz" == rotFlag) { alert("Correct flag!"); } else { alert("Incorrect flag, rot again"); } }
|
其中
1
| String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
|
这句代码的意思就是将字符后移13位,越界了就转到26个字母的开头(超过Z循环回A),循环进行
一共就26个字母,一个字母这样操作两次不就回去了嘛,还是原来那个字母。
所以给这句代码再运行一次就行了。
懒得写脚本了,直接在原代码上修改:
1 2 3 4 5
| var flag = ""; var rotFlag = "PyvragFvqrYbtvafNerRnfl@syner-ba.pbz"; flag = rotFlag.replace(/[a-zA-Z]/g, function(c) { return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26); });
|
JavaScript 没有任何打印或者输出的函数。
tnnd 还要想办法输出。
1 2 3 4 5 6 7 8 9 10 11 12 13
| <!DOCTYPE html> <html> <body> <script> var flag = ""; var rotFlag = "PyvragFvqrYbtvafNerRnfl@syner-ba.pbz"; flag = rotFlag.replace(/[a-zA-Z]/g, function(c) { return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26); }); console.log(flag); </script> </bod> </htm>
|
最后在控制台看到输出
